レプリケーション駆動な研究のために
August 31, 2023
パスが異なる
here::here()で対応可能. Pythonの場合 pyprojroot.here() などパッケージのバージョンが異なる
renvを用いてパッケージのバージョンを固定する. Pythonの場合 venv, poetry などRのバージョンが異なる
renvはRのバージョンを切り替えることができないので, 手動で切り替えるか常に最新版を用いるなどOSが異なる
USER/IMAGE:TAG で指定する. TAGを省略するとlatestが指定されるWSL: Connect to WSLを選択From a predefined...を選択. Ubuntuを選択
.devcontainer/devcontainer.jsonという設定ファイルが作成される.FROM: ベースとなるイメージを指定ENV: 環境変数を設定. Ubuntuの場合はDEBIAN_FRONTENDはこの設定が必要RUN: シェルコマンドを実行
apt update: パッケージリストを更新apt install: パッケージインストール (-y はすべてに自動でyesを返す)Reopen Folder in WSL/Locallyを選択.devcontainer/devcontainer.jsonを一度削除するReopen in Containerを選択
whoami)Reopen Folder in WSL/Locallyを選択FROM ubuntu
ENV DEBIAN_FRONTEND noninteractive
RUN apt update && apt install -y git
ARG USERNAME=vscode
ARG USER_UID=1000
ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME
USER $USERNAME.devcontainer/devcontainer.jsonのremoteUserをvscodeに変更するRebuild and Reopen in Containerを選択whoami)rockerプロジェクトrocker/rstudioまたはrocker/geospatialを使うことが多いrstudioというユーザが用意されている| イメージ | ベースイメージ | 概要 |
|---|---|---|
| rocker/r-ver | ubuntu | Ubuntu + R |
| rocker/rstudio | rocker/r-ver | + RStudio Server |
| rocker/tidyverse | rocker/rstudio | + tidyverse & devtools |
| rocker/verse | rocker/tidyverse | + tinytex & 組版関係のパッケージ |
| rocker/geospatial | rocker/geospatial | + 地理情報用パッケージ |
通常のRStudio Server
コンテナ内のRStudio Server
バインドマウント
ボリューム
docker-compose.ymlファイルにコンテナ起動の際の設定を記述することができるhandson2)Dockerfileを作成しFROM rocker/rstudioと記述するdocker-compose.ymlと.devcontainer/devcontainer.jsonを作成するRebuild and Reopen in Containerを選択するlocalhost:8787にアクセスする以下のようなDockerfileでコンテナの中にRパッケージをインストールできる
しかしこの方法はいくつかの問題がある
Dockerfileを書き換える必要があるこれらはrenvのキャッシュをDocker Volumesに保存することで解決できる
renvrenv用のDocker Volumeを作成する
docker volume create renvdocker-compose.yml, Dockerfileを以下のように書き換える
chownでrenvディレクトリの所有者をrstudioにしているRebuild and Reopen in Containerを選択するrenvを用いてパッケージを記録する